package day17;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class StudentClient {

  public static void main(String[] args) throws Exception {
    // 搭建一个客户端程序 this
    Socket client = new Socket("127.0.0.1", 8888);
    System.out.println("客户端：已成功连接服务器。");
    // 获取IO流
    // 输入流：BufferedReader
    // 输出流
    OutputStream os = client.getOutputStream();
    // 增强流
    ObjectOutputStream oos = new ObjectOutputStream(os);
    // 读取文件中的数据
    // 文件位置
    String filePath = "./student.txt";
    // 解析文件
    BufferedReader br = new BufferedReader(new FileReader(filePath));
    // 读文件
    String line = null;
    // 创建结合存放学生对象
    List<Student> list = new ArrayList<>();
    // 循环读取直到文件的末尾
    while ((line = br.readLine()) != null) {
      // line 是读取到的每一行数据
      // System.out.println("line:" + line);
      // 拆分数据获取学生对象的属性
      String[] arr = line.split("[.]");
      String id = arr[0];
      String name = arr[1];
      int age = Integer.parseInt(arr[2]);
      // 将文本转化为Student对象，
      Student s = new Student(id, name, age);
      // 输出验证封装好的学生对象
      // System.out.println(s);
      // 将学生对象添加到list集合中
      list.add(s);
    }
    // System.out.println(list.size());
    // 然后将对象发送给服务器
    oos.writeObject(list);
    System.out.println("客户端：已成功发送" + list.size() + "个学生对象。");
    // 关闭资源
    System.out.println("客户端：即将关闭。");
    oos.close();
    os.close();
    br.close();
    client.close();
  }
}
